package com.zf.yichat.config.utils;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

public class MongoJsonToSql {

    public static void main(String[] args) throws IOException {
        String mongoExportFile = "E:\\mongo-export1.json";
        String tableName = "aa_friends";

        List<String> insertStatements = new ArrayList<>();

        try (BufferedReader br = new BufferedReader(new FileReader(mongoExportFile))) {
            String line;
            while ((line = br.readLine()) != null) {
                ObjectMapper mapper = new ObjectMapper();
                JsonNode node = mapper.readTree(line);

                // 将 MongoDB 中的 `_id` 转换为 MySQL 中的 `id`
                String status = node.get("status").asText();
                String toUserId = node.get("toUserId").asText();
                String userId = node.get("userId").asText();
                // 构造 INSERT 语句，注意将表名和字段名替换成实际的名称
                String sql = String.format("INSERT INTO %s (status, toUserId, userId) VALUES ('%s', '%s', %s);",
                        tableName, status, toUserId, userId);
                insertStatements.add(sql);
//                // 将 MongoDB 中的 `_id` 转换为 MySQL 中的 `id`
//                String id = node.get("_id").asText();
//
//                String nickname = "未设置昵称";
//                JsonNode nicknameNode = node.get("nickname");
//                if (null != nicknameNode) {
//                    nickname = nicknameNode.asText();
//                }
//// 获取其他需要插入到 MySQL 表中的字段值
//                String phone = "";
//                JsonNode phoneNode = node.get("phone");
//                if (null != phoneNode) {
//                    phone = node.get("phone").asText();
//                }else {
//                    JsonNode telephoneNode = node.get("telephone");
//                    if (null != telephoneNode) {
//                        phone = telephoneNode.asText();
//                        if (phone.startsWith("86")) {
//                            phone = phone.substring(2);
//                        }
//                    }
//                }
//                Double balance = 0.0;
//                JsonNode balanceNode = node.get("balance");
//                if (null != balanceNode) {
//                    balance = balanceNode.asDouble();
//                }
//                BigDecimal balanceDecimal = BigDecimal.valueOf(balance);
//// 构造 INSERT 语句，注意将表名和字段名替换成实际的名称
//                String sql = String.format("INSERT INTO %s (id, nickname, phone, balance) VALUES ('%s', '%s', %s, %.2f);",
//                        tableName, id, nickname, phone, balanceDecimal);
//                insertStatements.add(sql);
            }
        }

        // 打印所有生成的 INSERT 语句
        // 将生成的 SQL 语句输出到文件
        try (PrintWriter out = new PrintWriter("E:\\output1.sql")) {
            for (String sql : insertStatements) {
                out.println(sql);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}